#ifndef _UI_H_
#define _UI_H_

#include <type.h>
void putfont(u32 x,u32 y,u32 c);
int putch(int c);

void setcolor(u32);

void box(int x,int y,int x1,int y1);
int setxy(int xx,int yy);

int draw_block(u32 *video_buf,u32 *buf,int x1,int y1,int x2,int y2);
int save_block(u32 *video_buf,u32 *buf,int x1,int y1,int x2,int y2);
int paint_block(u32 *video_buf,u32 color,int x1,int y1,int x2,int y2);

int measure_fps(void (*memcpy_fn)(void *dst,void *src,size_t count),size_t c);
void set_sdel(unsigned x);
void init_ui(int x,int y,int md);

void drawbox(u32 *video,int x,int y,int x1,int y1);
static inline void drawline(u32 *video,int x1,int y1,int x2,int y2);

struct frame_buffer	{
	void *buf;
	int bpp;	//bytes per pixel
	int x,y,fx,fy;
	u32 size;	//=(fx-x)*(fy-y)*bpp
	/*This points to the bpp dependent putpixel*/
	void (*putpixel)(struct frame_buffer *fb,u32 x,u32 y);
	void (*putpixelcol)(struct frame_buffer *fb,u32 x,u32 y,u32 color);
	u32 (*getpixel)(struct frame_buffer *fb,u32 x,u32 y);
};

inline void putpixel(struct frame_buffer *fb,u32 x,u32 y);


void drawfont(u32 *video,u32 x,u32 y,u32 c);


#endif
